public class Colisao{
  float angulo, maxAng;
  int power;
  PowerBall pb;
//  Som som;
  Colisao(PowerBall pb){//, Som som){
    this.pb=pb;
//    this.som=som;
    maxAng=45;
  }  
  void colisaoVertical(Ball b, Paddle p){// verifica colisao com as raquetes verticais
    if(power<10)
      power=10;
    
    if(b.y + b.size > p.y - p.h && b.y - b.size < p.y + p.h ){
      if(p.x>width/2 && Math.abs(b.x + b.size - p.x + p.w-15)<15 && b.dX>0){
        b.cor=p.cor;
        b.dX *=-1;
        power+=2;
        liga=false;
//        som.play(1);
//        som.setPan(som.s1, b);
        if(b.velY>0 || b.y>p.y){
          float distancia = b.y - p.y;
          angulo = encontraAngulo(distancia ,p.h + b.size-1, maxAng); 
          b.velY = angulo(angulo, b.velX);
        }
        if(b.velY<0 || b.y<p.y){
          float distancia = b.y - p.y;
          angulo = encontraAngulo(distancia ,p.h + b.size-1, maxAng);
          b.velY = angulo(angulo, b.velX);
        }
      }
        
      if(p.x<width/2 && Math.abs(b.x - b.size - p.x - p.w+15)<15 && b.dX<0){
        b.cor=p.cor;
        b.dX *=-1;
        power+=2;
        liga=false;
//        som.play(2);
//        som.setPan(som.s2, b);
        if(b.velY>0 || b.y>p.y){
          float distancia = b.y - p.y;
          angulo = encontraAngulo(distancia ,p.h + b.size-1, maxAng);
          b.velY = angulo(angulo, b.velX);
          b.dY=1;
        }
        if(b.velY<0 || b.y<p.y){
          float distancia = b.y - p.y;
          angulo = encontraAngulo(distancia ,p.h + b.size-1, maxAng);
          b.velY = angulo(angulo, b.velX);
          b.dY=-1;
        }   
      }
    }
  }//fim do método colisaoVertical
  
  
  float angulo(float angulo, float velX){
    angulo = radians(angulo);
    return tan(angulo)*velX;
  }
  
  float encontraAngulo(float d, float maxD, float maxAng){
    return Math.abs(d)*(maxAng/maxD); 
  }
  
  
  
}// fim da classe
